﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;

namespace DingY.Utilitys.Logs
{
    /// <summary>
    /// 日志操作类
    /// </summary>
    public class Log
    {
        public Log()
        {

        }

        //// <summary>
        /// 写入日志文件
        /// </summary>
        /// <param name="input"></param>
        public void WriteLog(string input)
        {
            //文件路径在配置文件中设置
            string _Path = System.Configuration.ConfigurationManager.AppSettings["LogPath"].ToString();
            //检测目录是否存在
            if (!Directory.Exists(_Path))
            {
                Directory.CreateDirectory(_Path);
            }
            //文件名由日期生成后缀为.log
            string _FileName = DateTime.Now.ToString("yyyyMMdd") + ".log";

            string _LogFile = _Path + _FileName;
            //定义文件信息对象
            FileInfo objFileInfo = new FileInfo(_LogFile);
            //检测文件是否存在
            if (!objFileInfo.Exists)
            {
                FileStream objFileStream;
                objFileStream = File.Create(_LogFile);
                objFileStream.Close();
                objFileInfo = new FileInfo(_LogFile);
            }

            //创建只写文件流
            using (FileStream objFileStream = objFileInfo.OpenWrite())
            {
                //根据上面创建的文件流创建写数据流
                StreamWriter objStreamWriter = new StreamWriter(objFileStream);

                //设置写数据流的起始位置为文件流的末尾
                objStreamWriter.BaseStream.Seek(0, SeekOrigin.End);

                //写入当前系统日期时间 
                objStreamWriter.Write("{0} ——》 ", DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss.fff"));

                //写入日志内容并换行
                objStreamWriter.Write(input + "\n");

                //清空缓冲区内容，并把缓冲区内容写入基础流
                objStreamWriter.Flush();
                //关闭写数据流
                objStreamWriter.Close();
            }
        }
    }
}